home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
usenet
/
sources
/
volume2
/
editors
/
dme1315.of6
< prev
next >
Wrap
Text File
|
1988-10-22
|
41KB
|
1,964 lines
Path: xanth!nic.MR.NET!hal!cwjcc!mailrus!uflorida!gatech!bbn!ulowell!page
From: page@swan.ulowell.edu (Bob Page)
Newsgroups: comp.sources.amiga
Subject: v02i013: dme - programmer's text editor V1.31, Part05/06
Message-ID: <9775@swan.ulowell.edu>
Date: 22 Oct 88 04:35:14 GMT
Organization: University of Lowell, Computer Science Dept.
Lines: 1953
Approved: page@swan.ulowell.edu
Submitted-by: dillon@cory.berkeley.edu (Matt Dillon)
Posting-number: Volume 2, Issue 13
Archive-name: editors/dme131.5of6
# This is a shell archive. Remove anything before this line
# then unpack it by saving it in a file and typing "sh file"
# (Files unpacked will be owned by you and have default permissions).
# This archive contains the following files:
# ./rexmacs/swish2.dme
# ./rexmacs/xyz1.dme
# ./rexmacs/args.dme
# ./rexmacs/second.dme
# ./rexmacs/yy.dme
# ./rexmacs/one.dme
# ./rexmacs/putd.dme
# ./rexmacs/two.dme
# ./rexmacs/interr2.dme
# ./rexmacs/swish.dme
# ./rexmacs/xx.dme
# ./rexmacs/three.dme
# ./rexmacs/alley.dme
# ./rexmacs/save.dme
# ./rexmacs/xyz2.dme
# ./rexmacs/rxtop.dme
# ./rexmacs/addr.dme
# ./rexmacs/zz.dme
# ./rexmacs/bot.dme
# ./rexmacs/cat.dme
# ./rexmacs/get.dme
# ./rexmacs/findrexx.dme
# ./rexmacs/qq.dme
# ./rexmacs/rxbot.dme
# ./rexmacs/findbaz.dme
# ./rexmacs/put.dme
# ./rexmacs/interr.dme
# ./src/rexx.h
# ./src/defs.h
# ./src/cmd1.c
#
if `test ! -d ./rexmacs`
then
mkdir ./rexmacs
echo "mkdir ./rexmacs"
fi
if `test ! -s ./rexmacs/swish2.dme`
then
echo "writing ./rexmacs/swish2.dme"
cat > ./rexmacs/swish2.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
swish
bottom
top
bottom
top
bottom
top
bottom
top
bottom
top
find "........"
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/swish2.dme"
fi
if [ `wc -c ./rexmacs/swish2.dme | awk '{printf $1}'` -ne 151 ]
then
echo `wc -c ./rexmacs/swish2.dme | awk '{print "Got " $1 ", Expected " 151}'`
fi
if `test ! -s ./rexmacs/xyz1.dme`
then
echo "writing ./rexmacs/xyz1.dme"
cat > ./rexmacs/xyz1.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say xyz1
say "xyz1 - calling xyz2"
xyz2 j k l m n o
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/xyz1.dme"
fi
if [ `wc -c ./rexmacs/xyz1.dme | awk '{printf $1}'` -ne 218 ]
then
echo `wc -c ./rexmacs/xyz1.dme | awk '{print "Got " $1 ", Expected " 218}'`
fi
if `test ! -s ./rexmacs/args.dme`
then
echo "writing ./rexmacs/args.dme"
cat > ./rexmacs/args.dme << '\Rogue\Monster\'
/* test to look at what dme is passing to ARexx .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg a1 a2 a3 a4 a5 a6
say a1 a2 a3 a4 a5 a6
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/args.dme"
fi
if [ `wc -c ./rexmacs/args.dme | awk '{printf $1}'` -ne 168 ]
then
echo `wc -c ./rexmacs/args.dme | awk '{print "Got " $1 ", Expected " 168}'`
fi
if `test ! -s ./rexmacs/second.dme`
then
echo "writing ./rexmacs/second.dme"
cat > ./rexmacs/second.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
cat
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/second.dme"
fi
if [ `wc -c ./rexmacs/second.dme | awk '{printf $1}'` -ne 169 ]
then
echo `wc -c ./rexmacs/second.dme | awk '{print "Got " $1 ", Expected " 169}'`
fi
if `test ! -s ./rexmacs/yy.dme`
then
echo "writing ./rexmacs/yy.dme"
cat > ./rexmacs/yy.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
zz
bottom
top
bottom
top
bottom
top
bottom
top
bottom
top
find "........"
zz
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/yy.dme"
fi
if [ `wc -c ./rexmacs/yy.dme | awk '{printf $1}'` -ne 151 ]
then
echo `wc -c ./rexmacs/yy.dme | awk '{print "Got " $1 ", Expected " 151}'`
fi
if `test ! -s ./rexmacs/one.dme`
then
echo "writing ./rexmacs/one.dme"
cat > ./rexmacs/one.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "one ... calling two"
two
say "back to one"
top
three
bottom
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/one.dme"
fi
if [ `wc -c ./rexmacs/one.dme | awk '{printf $1}'` -ne 230 ]
then
echo `wc -c ./rexmacs/one.dme | awk '{print "Got " $1 ", Expected " 230}'`
fi
if `test ! -s ./rexmacs/putd.dme`
then
echo "writing ./rexmacs/putd.dme"
cat > ./rexmacs/putd.dme << '\Rogue\Monster\'
/* Saves the marked block as a file with the filename specified by */
/* the 1st argument, and then deletes it from the file being edited. */
/* If no name is specified, the block is written to file "t:$bsave". */
/* Arguments following the 1st one are ignored. */
/* */
/* Kim DeVaughn 12/28/87 */
options failat 5
rc = 0
parse arg filename junk
if filename = ""
then bsave "t:$bsave"
else bsave filename
bdelete
exit rc
\Rogue\Monster\
else
echo "will not over write ./rexmacs/putd.dme"
fi
if [ `wc -c ./rexmacs/putd.dme | awk '{printf $1}'` -ne 589 ]
then
echo `wc -c ./rexmacs/putd.dme | awk '{print "Got " $1 ", Expected " 589}'`
fi
if `test ! -s ./rexmacs/two.dme`
then
echo "writing ./rexmacs/two.dme"
cat > ./rexmacs/two.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "two ... calling three"
three
say "back to two"
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/two.dme"
fi
if [ `wc -c ./rexmacs/two.dme | awk '{printf $1}'` -ne 217 ]
then
echo `wc -c ./rexmacs/two.dme | awk '{print "Got " $1 ", Expected " 217}'`
fi
if `test ! -s ./rexmacs/interr2.dme`
then
echo "writing ./rexmacs/interr2.dme"
cat > ./rexmacs/interr2.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "do an else all by itself ..."
else
say "shoulda caused an error ..."
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/interr2.dme"
fi
if [ `wc -c ./rexmacs/interr2.dme | awk '{printf $1}'` -ne 239 ]
then
echo `wc -c ./rexmacs/interr2.dme | awk '{print "Got " $1 ", Expected " 239}'`
fi
if `test ! -s ./rexmacs/swish.dme`
then
echo "writing ./rexmacs/swish.dme"
cat > ./rexmacs/swish.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
bottom
top
bottom
top
bottom
top
bottom
top
bottom
top
find "rexx"
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/swish.dme"
fi
if [ `wc -c ./rexmacs/swish.dme | awk '{printf $1}'` -ne 141 ]
then
echo `wc -c ./rexmacs/swish.dme | awk '{print "Got " $1 ", Expected " 141}'`
fi
if `test ! -s ./rexmacs/xx.dme`
then
echo "writing ./rexmacs/xx.dme"
cat > ./rexmacs/xx.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
yy
bottom
top
bottom
top
bottom
top
bottom
top
bottom
top
find "rexx"
yy
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/xx.dme"
fi
if [ `wc -c ./rexmacs/xx.dme | awk '{printf $1}'` -ne 147 ]
then
echo `wc -c ./rexmacs/xx.dme | awk '{print "Got " $1 ", Expected " 147}'`
fi
if `test ! -s ./rexmacs/three.dme`
then
echo "writing ./rexmacs/three.dme"
cat > ./rexmacs/three.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "three here"
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/three.dme"
fi
if [ `wc -c ./rexmacs/three.dme | awk '{printf $1}'` -ne 182 ]
then
echo `wc -c ./rexmacs/three.dme | awk '{print "Got " $1 ", Expected " 182}'`
fi
if `test ! -s ./rexmacs/alley.dme`
then
echo "writing ./rexmacs/alley.dme"
cat > ./rexmacs/alley.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
say "Gee ... I really did get called!!!"
say address()
options failat 4
shit
say "RC = " RC
damn
say "RC = " RC
and hell
say "RC = " RC
it
say "RC = " RC
dont
say "RC = " RC
matter to me
say "RC = " RC
exit(69)
\Rogue\Monster\
else
echo "will not over write ./rexmacs/alley.dme"
fi
if [ `wc -c ./rexmacs/alley.dme | awk '{printf $1}'` -ne 277 ]
then
echo `wc -c ./rexmacs/alley.dme | awk '{print "Got " $1 ", Expected " 277}'`
fi
if `test ! -s ./rexmacs/save.dme`
then
echo "writing ./rexmacs/save.dme"
cat > ./rexmacs/save.dme << '\Rogue\Monster\'
/* Saves the file with the filename specified by the 1st argument. */
/* If no name is specified, the file is saved with it's original */
/* filename. Arguments following the 1st one are ignored. */
/* */
/* Kim DeVaughn 12/21/87 */
options failat 5
rc = 0
parse arg filename junk
if filename = ""
then saveold
else saveas filename
exit rc
\Rogue\Monster\
else
echo "will not over write ./rexmacs/save.dme"
fi
if [ `wc -c ./rexmacs/save.dme | awk '{printf $1}'` -ne 487 ]
then
echo `wc -c ./rexmacs/save.dme | awk '{print "Got " $1 ", Expected " 487}'`
fi
if `test ! -s ./rexmacs/xyz2.dme`
then
echo "writing ./rexmacs/xyz2.dme"
cat > ./rexmacs/xyz2.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "back to xyz1.dme"
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/xyz2.dme"
fi
if [ `wc -c ./rexmacs/xyz2.dme | awk '{printf $1}'` -ne 188 ]
then
echo `wc -c ./rexmacs/xyz2.dme | awk '{print "Got " $1 ", Expected " 188}'`
fi
if `test ! -s ./rexmacs/rxtop.dme`
then
echo "writing ./rexmacs/rxtop.dme"
cat > ./rexmacs/rxtop.dme << '\Rogue\Monster\'
/* give 'em a TOP command */
top
say "RC for TOP = " RC
exit
\Rogue\Monster\
else
echo "will not over write ./rexmacs/rxtop.dme"
fi
if [ `wc -c ./rexmacs/rxtop.dme | awk '{printf $1}'` -ne 62 ]
then
echo `wc -c ./rexmacs/rxtop.dme | awk '{print "Got " $1 ", Expected " 62}'`
fi
if `test ! -s ./rexmacs/addr.dme`
then
echo "writing ./rexmacs/addr.dme"
cat > ./rexmacs/addr.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
second fee fi foe foo
second
say Back to addr.dme
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/addr.dme"
fi
if [ `wc -c ./rexmacs/addr.dme | awk '{printf $1}'` -ne 215 ]
then
echo `wc -c ./rexmacs/addr.dme | awk '{print "Got " $1 ", Expected " 215}'`
fi
if `test ! -s ./rexmacs/zz.dme`
then
echo "writing ./rexmacs/zz.dme"
cat > ./rexmacs/zz.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
bottom
top
bottom
top
bottom
top
bottom
top
bottom
top
find "ARexx"
say foo
parse source a b c d e f g h i
say a b c d e f g h i
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/zz.dme"
fi
if [ `wc -c ./rexmacs/zz.dme | awk '{printf $1}'` -ne 203 ]
then
echo `wc -c ./rexmacs/zz.dme | awk '{print "Got " $1 ", Expected " 203}'`
fi
if `test ! -s ./rexmacs/bot.dme`
then
echo "writing ./rexmacs/bot.dme"
cat > ./rexmacs/bot.dme << '\Rogue\Monster\'
/* Just make "bot" a synonym/alias for "bottom". */
/* */
/* Kim DeVaughn 12/21/87 */
bottom
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/bot.dme"
fi
if [ `wc -c ./rexmacs/bot.dme | awk '{printf $1}'` -ne 184 ]
then
echo `wc -c ./rexmacs/bot.dme | awk '{print "Got " $1 ", Expected " 184}'`
fi
if `test ! -s ./rexmacs/cat.dme`
then
echo "writing ./rexmacs/cat.dme"
cat > ./rexmacs/cat.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
options failat 100
shit
damn
and hell
it
dont
matter to me
exit(69)
\Rogue\Monster\
else
echo "will not over write ./rexmacs/cat.dme"
fi
if [ `wc -c ./rexmacs/cat.dme | awk '{printf $1}'` -ne 230 ]
then
echo `wc -c ./rexmacs/cat.dme | awk '{print "Got " $1 ", Expected " 230}'`
fi
if `test ! -s ./rexmacs/get.dme`
then
echo "writing ./rexmacs/get.dme"
cat > ./rexmacs/get.dme << '\Rogue\Monster\'
/* Inserts the file specified by the 1st argument immediately above */
/* the line the cursor is on. If no filename is specified, the file */
/* "t:$bsave" is used if it exists. Arguments following the 1st one */
/* are ignored. */
/* */
/* Kim DeVaughn 12/21/87 */
options failat 5
rc = 0
parse arg filename junk
if filename = ""
then if exists("t:$bsave")
then insfile "t:$bsave"
else nop
else insfile filename
exit rc
\Rogue\Monster\
else
echo "will not over write ./rexmacs/get.dme"
fi
if [ `wc -c ./rexmacs/get.dme | awk '{printf $1}'` -ne 477 ]
then
echo `wc -c ./rexmacs/get.dme | awk '{print "Got " $1 ", Expected " 477}'`
fi
if `test ! -s ./rexmacs/findrexx.dme`
then
echo "writing ./rexmacs/findrexx.dme"
cat > ./rexmacs/findrexx.dme << '\Rogue\Monster\'
/* findrexx */
options failat 5
find "rexx"
exit RC
\Rogue\Monster\
else
echo "will not over write ./rexmacs/findrexx.dme"
fi
if [ `wc -c ./rexmacs/findrexx.dme | awk '{printf $1}'` -ne 53 ]
then
echo `wc -c ./rexmacs/findrexx.dme | awk '{print "Got " $1 ", Expected " 53}'`
fi
if `test ! -s ./rexmacs/qq.dme`
then
echo "writing ./rexmacs/qq.dme"
cat > ./rexmacs/qq.dme << '\Rogue\Monster\'
/* Just make "qq" a synonym/alias for "quit". */
/* */
/* Kim DeVaughn 03/27/88 */
quit
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/qq.dme"
fi
if [ `wc -c ./rexmacs/qq.dme | awk '{printf $1}'` -ne 115 ]
then
echo `wc -c ./rexmacs/qq.dme | awk '{print "Got " $1 ", Expected " 115}'`
fi
if `test ! -s ./rexmacs/rxbot.dme`
then
echo "writing ./rexmacs/rxbot.dme"
cat > ./rexmacs/rxbot.dme << '\Rogue\Monster\'
/* give 'em a BOTTOM command */
bottom
say "RC for BOTTOM = " RC
exit
\Rogue\Monster\
else
echo "will not over write ./rexmacs/rxbot.dme"
fi
if [ `wc -c ./rexmacs/rxbot.dme | awk '{printf $1}'` -ne 71 ]
then
echo `wc -c ./rexmacs/rxbot.dme | awk '{print "Got " $1 ", Expected " 71}'`
fi
if `test ! -s ./rexmacs/findbaz.dme`
then
echo "writing ./rexmacs/findbaz.dme"
cat > ./rexmacs/findbaz.dme << '\Rogue\Monster\'
/* findbaz */
find baz
exit
\Rogue\Monster\
else
echo "will not over write ./rexmacs/findbaz.dme"
fi
if [ `wc -c ./rexmacs/findbaz.dme | awk '{printf $1}'` -ne 29 ]
then
echo `wc -c ./rexmacs/findbaz.dme | awk '{print "Got " $1 ", Expected " 29}'`
fi
if `test ! -s ./rexmacs/put.dme`
then
echo "writing ./rexmacs/put.dme"
cat > ./rexmacs/put.dme << '\Rogue\Monster\'
/* Saves the marked block as a file with the filename specified by */
/* the 1st argument. If no name is specified, the block is written */
/* to file "t:$bsave". Arguments following the 1st one are ignored. */
/* */
/* Kim DeVaughn 12/21/87 */
options failat 5
rc = 0
parse arg filename junk
if filename = ""
then bsave "t:$bsave"
else bsave filename
exit rc
\Rogue\Monster\
else
echo "will not over write ./rexmacs/put.dme"
fi
if [ `wc -c ./rexmacs/put.dme | awk '{printf $1}'` -ne 399 ]
then
echo `wc -c ./rexmacs/put.dme | awk '{print "Got " $1 ", Expected " 399}'`
fi
if `test ! -s ./rexmacs/interr.dme`
then
echo "writing ./rexmacs/interr.dme"
cat > ./rexmacs/interr.dme << '\Rogue\Monster\'
/* test to see if we can invoke ARexx from inside of dme .... */
parse source a b c d e f g h i
say a b c d e f g h i
parse arg j k l m n o
say j k l m n o
say "do an else all by itself ..."
/* else */
say "shoulda caused an error ..."
interr2 poo poo
exit 0
\Rogue\Monster\
else
echo "will not over write ./rexmacs/interr.dme"
fi
if [ `wc -c ./rexmacs/interr.dme | awk '{printf $1}'` -ne 261 ]
then
echo `wc -c ./rexmacs/interr.dme | awk '{print "Got " $1 ", Expected " 261}'`
fi
if `test ! -d ./src`
then
mkdir ./src
echo "mkdir ./src"
fi
if `test ! -s ./src/rexx.h`
then
echo "writing ./src/rexx.h"
cat > ./src/rexx.h << '\Rogue\Monster\'
/*
* REXX.H
*
* (c) Copyright 1988 Kim DeVaughn, All Rights Reserved
*
* Definitions for the ARexx interface, in addition to the ARexx includes.
*
*/
#ifndef REXX_STORAGE_H
#include <rexx/storage.h>
#endif
#ifndef REXX_H
#define REXX_H
/* More RexxMsg field definitions, to make life a little easier. */
#define ACTION(rmp) (rmp->rm_Action) /* command (action) code */
#define RESULT1(rmp) (rmp->rm_Result1) /* primary result (return code) */
#define RESULT2(rmp) (rmp->rm_Result2) /* secondary result */
#define COMM_ADDR(rmp) (rmp->rm_CommAddr) /* host address (port name) */
#define FILE_EXT(rmp) (rmp->rm_FileExt) /* file extension */
/*
* Error Level Definitions [ PRELIMINARY - SUBJECT TO CHANGE ]
*
* Definitions for internal (dme) error reporting begin with CMD_
* Definitions for external (ARexx) error reporting begin with MAC_
*
*
* 0 - command execution successful [normal] (i.e., title = OK)
* 1 - command execution successful [alternate] (i.e., title = OK)
* 2 - command execution successful [normal] (don't alter title)
* 3 - command execution successful [alternate] (don't alter title)
* 4 - reserved
* 5 - command could not complete requested function
* 10 - command was unable to process correctly
* 20 - command failure detected - data integrity in question
* 50 - internal error detected by dme or ARexx
*
* Only levels 0 and 1 allow the ARexx interface code to explicitly set title.
*
*
* Eg: 0 - the normal case ("OK")
* 1 - a secondary succeeful result ("OK")
* 2 - normal, but may have put up an informational message
* 3 - secondary normal, but may have informational message
* 4 -
* 5 - "find" didn't find, "file not found", "block not marked", etc.
* 10 - "command not found", "syntax error", etc.
* 15 - a sever failure; "write failed", "unable to open write file", etc.
* 20 - maybe a sequence of commands that failed; may have modified data
* 50 - dunno, but definitely bad shit
*/
#define CMD_VALID0 0
#define CMD_VALID1 1
#define CMD_VALID2 2
#define CMD_VALID3 3
#define CMD_VALID4 4
#define CMD_FAILED 5
#define CMD_ERROR 10
#define CMD_SEVERE 15
#define CMD_ABORT 20
#define CMD_MALFUNCTION 50
/* Similar to the internal command error levels above, for the moment. */
#define MAC_VALID0 0
#define MAC_VALID1 1
#define MAC_VALID2 2
#define MAC_VALID3 3
#define MAC_VALID4 4
#define MAC_FAILED 5
#define MAC_ERROR 10
#define MAC_SEVERE 15
#define MAC_ABORT 20
#define MAC_MALFUNCTION 50
#define CMD_INITIAL 0
#define TITLE_THRESHHOLD CMD_VALID1
#endif
\Rogue\Monster\
else
echo "will not over write ./src/rexx.h"
fi
if [ `wc -c ./src/rexx.h | awk '{printf $1}'` -ne 2817 ]
then
echo `wc -c ./src/rexx.h | awk '{print "Got " $1 ", Expected " 2817}'`
fi
if `test ! -s ./src/defs.h`
then
echo "writing ./src/defs.h"
cat > ./src/defs.h << '\Rogue\Monster\'
/*
* DEFS.H
*
* (C)Copyright 1987 by Matthew Dillon, All Rights Reserved
*
* ARexx support added 03/19/88 - Kim DeVaughn
*
*/
#define AREXX 1
#include <exec/types.h>
#include <exec/io.h>
#include <devices/keymap.h>
#include <devices/console.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <workbench/icon.h>
#include <workbench/startup.h>
#include <workbench/workbench.h>
#include <local/typedefs.h>
#include <local/xmisc.h>
#if AREXX
#include "rexx/storage.h"
#include "rexx/rxslib.h"
#include "rexx/rexxio.h"
#include "rexx/errors.h"
#endif
#define MAXTOGGLE 256
#define QMOVE (0x6B|0x80)
#define COLT(n) (XTbase + (n) * Xsize)
#define ROWT(n) (YTbase + (n) * Ysize)
#define COL(n) (Xbase + (n) * Xsize)
#define ROW(n) (Ybase + (n) * Ysize)
typedef struct WBStartup WBS;
typedef struct DiskObject DISKOBJ;
extern WBS *Wbs;
extern DISKOBJ *Do;
extern short Xsize, Ysize;
extern short XTbase, YTbase;
extern short Rows, Columns;
extern short Xbase, Ybase;
extern short Xpixs, Ypixs;
extern ubyte *av[];
extern char Wdisable;
typedef struct _ED {
MNODE Node;
WIN *Win;
FONT *Font; /* da font, da font! */
long Topline, Topcolumn;
long Line, Column;
long Lines, Maxlines;
ubyte **List;
ubyte Name[64];
ubyte Wtitle[130];
char Modified;
ubyte Tabstop;
ubyte Margin;
char Insertmode;
char IgnoreCase;
char Wordwrap;
char iconmode; /* window in icon mode */
short Winx; /* save state of non-icon window */
short Winy;
short Winwidth;
short Winheight;
short IWinx, IWiny; /* save state of icon window */
long dirlock; /* directory lock */
} ED;
extern long BSline, BEline;
extern short BSchar, BEchar;
extern ED *BEp;
#ifndef NULL
#define NULL 0
#endif
#ifdef E
#undef E
#endif
extern MLIST DBase;
extern MLIST PBase;
extern ED *Ep;
extern char Overide;
extern char Savetabs;
extern char memoryfail, Nsu, Msgchk;
extern ubyte CtlC;
extern ubyte Current[256];
extern ubyte Space[32];
extern short Clen;
extern char Abortcommand, MShowTitle;
extern char Comlinemode;
extern RP *Rp;
extern WIN *Win;
extern char *Partial;
extern char *String;
extern ubyte *allocl(), *allocb();
extern char *keyspectomacro();
extern char *menutomacro();
extern char *getvar();
extern char *GetDEnv();
extern ED *finded();
extern void search_operation();
extern void *malloc(), *AllocMem(), *strcpy();
extern long Dirlock;
extern PORT *IPCPort;
extern long DResBase;
\Rogue\Monster\
else
echo "will not over write ./src/defs.h"
fi
if [ `wc -c ./src/defs.h | awk '{printf $1}'` -ne 2549 ]
then
echo `wc -c ./src/defs.h | awk '{print "Got " $1 ", Expected " 2549}'`
fi
if `test ! -s ./src/cmd1.c`
then
echo "writing ./src/cmd1.c"
cat > ./src/cmd1.c << '\Rogue\Monster\'
/*
* CMD1.C (was TEXT1.C)
*
* (C)Copyright 1987 by Matthew Dillon, All Rights Reserved
*/
#include "defs.h"
#define nomemory() { memoryfail = 1; }
char RecallBuf[256];
setpen(line)
{
register short pen = (Ep == BEp && line >= BSline && line <= BEline) ? 2 : 1;
if (Comlinemode)
pen = 1;
if (pen != Rp->FgPen)
SetAPen(Rp, pen);
}
text_init()
{
register ED *e;
register ED *ep = Ep;
text_switch(NULL);
e = (ED *)allocb(sizeof(ED));
if (e == NULL)
return(0);
bzero(e, sizeof(ED));
e->Win = Win;
if (ep) {
e->dirlock = DupLock(ep->dirlock);
e->Insertmode = ep->Insertmode;
e->IgnoreCase = ep->IgnoreCase;
e->Tabstop = ep->Tabstop;
e->Wordwrap = ep->Wordwrap;
if (ep->Font) {
e->Font = ep->Font;
++e->Font->tf_Accessors;
SetFont(Win->RPort, e->Font);
}
} else {
PROC *proc = (PROC *)FindTask(NULL);
e->dirlock = DupLock(proc->pr_CurrentDir);
e->Insertmode = 1;
e->Tabstop = 4;
}
e->Lines = 1;
e->Maxlines = 32;
e->List = (ubyte **)allocl(e->Maxlines);
e->List[0] = allocb(1);
e->List[0][0] = Current[0] = Clen = 0;
e->IWiny = 16;
AddHead(&DBase, e);
strcpy(e->Name, "unnamed");
Ep = e;
text_cursor(1);
return(1);
}
text_switch(win)
WIN *win;
{
register ED *e;
if (win)
text_sync();
if (win) {
for (e = (ED *)DBase.mlh_Head; e->Node.mln_Succ; e = (ED *)e->Node.mln_Succ) {
if (e->Win == win) {
Ep = e;
Win = win;
Rp = Win->RPort;
text_load();
if (!Ep->iconmode) {
set_window_params();
window_title();
}
return(1);
}
}
return(0);
}
}
text_sync()
{
register ED *ep = Ep;
char redraw = 0;
short len;
ubyte *ptr;
for (len = strlen(Current) - 1; len >= 0 && Current[len] == ' '; --len)
Current[len] = '\0';
Clen = len + 1;
if (!Comlinemode) {
if (strlen(ep->List[ep->Line]) != Clen) {
if (ptr = allocb(Clen+1)) {
ep->Modified = 1;
Overide = 0;
FreeMem(ep->List[ep->Line], strlen(ep->List[ep->Line])+1);
ep->List[ep->Line] = ptr;
} else {
nomemory();
strcpy(Current, ep->List[ep->Line]);
Clen = strlen(Current);
}
} else {
if (strcmp(ep->List[ep->Line], Current)) {
ep->Modified = 1;
Overide = 0;
}
}
strcpy(ep->List[ep->Line], Current);
}
if (Nsu == 0) {
if (ep->Column - ep->Topcolumn >= Columns || ep->Column < ep->Topcolumn) {
redraw = 1;
ep->Topcolumn = ep->Column - (Columns>>1);
if (ep->Topcolumn < 0)
ep->Topcolumn = 0;
}
if (ep->Line - ep->Topline >= Rows || ep->Line < ep->Topline) {
redraw = 1;
ep->Topline = ep->Line - (Rows>>1);
if (ep->Topline < 0)
ep->Topline = 0;
}
}
while (ep->Column > Clen)
Current[Clen++] = ' ';
Current[Clen] = '\0';
if (redraw)
text_redisplay();
return((int)redraw);
}
text_load()
{
if (Comlinemode)
return(0);
strcpy(Current, Ep->List[Ep->Line]);
Clen = strlen(Current);
while (Ep->Column > Clen)
Current[Clen++] = ' ';
Current[Clen] = '\0';
}
text_colno()
{
return(Ep->Column);
}
text_lineno()
{
return(Ep->Line+1);
}
text_lines()
{
return(Ep->Lines);
}
text_cols()
{
return((int)Clen);
}
text_imode()
{
return(Ep->Insertmode);
}
text_tabsize()
{
return((int)Ep->Tabstop);
}
ubyte *
text_name()
{
return(Ep->Name);
}
text_uninit()
{
register int i;
register ED *ep = Ep;
PMKill(ep);
freelist(ep->List, ep->Lines);
FreeMem(ep->List, ep->Maxlines * sizeof(char *));
if (BEp == ep) {
BEp = NULL;
BSline = BEline = -1;
}
Remove(ep);
if (ep->Font) {
SetFont(ep->Win->RPort, ep->Win->WScreen->RastPort.Font);
CloseFont(ep->Font);
}
UnLock(ep->dirlock);
FreeMem(ep, sizeof(ED));
if (((ED *)DBase.mlh_Head)->Node.mln_Succ) {
Ep = (ED *)DBase.mlh_Head;
text_load();
} else {
Ep = NULL;
}
}
inversemode(n)
{
if (n) {
SetAPen(Rp, 3);
SetDrMd(Rp, JAM2|INVERSVID);
} else {
setpen(Ep->Line);
SetDrMd(Rp, JAM2);
}
}
text_cursor(n)
{
movetocursor();
inversemode(n);
if (Current[Ep->Column])
Text(Rp, Current+Ep->Column, 1);
else
Text(Rp, " ", 1);
inversemode(0);
}
text_position(col, row)
{
register ED *ep = Ep;
text_sync();
if (col == 0)
col = -1;
ep->Column = ep->Topcolumn + col;
if (ep->Column > 254)
ep->Column = 254;
if (ep->Column < 0)
ep->Column = 0;
ep->Line = ep->Topline + row;
if (ep->Line >= ep->Lines)
ep->Line = ep->Lines - 1;
if (ep->Line < 0)
ep->Line = 0;
text_load();
text_sync();
}
displayblock(on)
{
register long start = Ep->Topline;
register long lines = BEline - BSline + 1;
if (start < BSline)
start = BSline;
if (!on) {
BSline = BEline = -1;
BEp = NULL;
}
if (Ep == BEp)
text_displayseg(start - Ep->Topline, lines);
}
text_redrawblock(ok)
{
WIN *savewin = NULL;
if (BEp) {
if (BEp != Ep) {
savewin = Ep->Win;
text_switch(BEp->Win);
}
if (BSline <= BEline && BSline >= 0 && BEline < Ep->Lines) {
if (!ok) {
BEp = NULL;
BSline = BEline = -1;
}
text_displayseg(0, Rows);
}
if (savewin)
text_switch(savewin);
}
if (!ok) {
BEp = NULL;
BSline = BEline = -1;
}
}
text_displayseg(start, n)
{
register short i, c;
register ubyte *ptr;
register ED *ep = Ep;
char ib;
if (Nsu)
return(0);
for (i = start; i < start + n && i < Rows && ep->Topline + i < ep->Lines; ++i) {
if (Comlinemode) {
if (ep->Topline + i != ep->Line)
continue;
ptr = Current;
SetAPen(Rp, 1);
} else {
ptr = ep->List[ep->Topline + i];
setpen(i+ep->Topline);
}
for (c = ep->Topcolumn; c && *ptr; ++ptr, --c);
c = strlen(ptr);
if (c) {
Move(Rp, COLT(0), ROWT(i));
Text(Rp, ptr, (c > Columns) ? Columns : c);
}
}
}
text_redisplay()
{
if (Nsu)
return(0);
SetAPen(Rp, 0);
if (Comlinemode)
RectFill(Rp, COL(0), ROW(Rows-1), Xbase+Xpixs, Ybase+Ypixs);
else
RectFill(Rp, Xbase, Ybase, Xbase + Xpixs, Ybase + Ypixs);
text_displayseg(0,Rows);
}
text_redisplaycurrline()
{
int row = Ep->Line - Ep->Topline;
if (Nsu)
return(0);
SetAPen(Rp, 0);
RectFill(Rp, COL(0), ROW(row), Xbase+Xpixs, ROW(row+1)-1);
text_displayseg(row, 1);
}
text_write(str)
ubyte *str;
{
register short len = strlen(str);
register short i;
register ED *ep = Ep;
if (Clen + len >= 255) {
text_sync();
text_load();
}
if (ep->Insertmode == 0) {
if (ep->Column + len >= 255)
goto fail;
bmov(str, Current + ep->Column, len);
if (ep->Column + len >= Clen)
Clen = ep->Column + len;
Current[Clen] = 0;
} else {
if (Clen + len >= 255)
goto fail;
bmov(Current + ep->Column, Current + ep->Column + len, Clen+1-ep->Column);
bmov(str, Current + ep->Column, len);
Clen += len;
if (len < Columns - (ep->Column - ep->Topcolumn)) {
ScrollRaster(Rp, -len * Xsize, 0 ,
COL(ep->Column - ep->Topcolumn),
ROW(ep->Line - ep->Topline),
COL(Columns) - 1,
ROW(ep->Line - ep->Topline + 1) - 1
);
}
}
i = (ep->Column - ep->Topcolumn + len > Columns) ? Columns - ep->Column + ep->Topcolumn : len;
setpen(ep->Line);
Move(Rp, COLT(ep->Column - ep->Topcolumn), ROWT(ep->Line - ep->Topline));
Text(Rp, str, i);
ep->Column += len;
if (ep->Column - ep->Topcolumn >= Columns)
text_sync();
fail:
if (Comlinemode == 0 && ep->Wordwrap)
do_reformat(0);
}
do_up()
{
if (Ep->Line) {
text_sync();
--Ep->Line;
text_load();
if (Ep->Line < Ep->Topline) {
if (Nsu == 0) {
ScrollRaster(Rp,0,-Ysize,COL(0),ROW(0),COL(Columns)-1,ROW(Rows)-1);
--Ep->Topline;
text_displayseg(0, 1);
}
}
} else {
Abortcommand = 1;
}
}
do_scrolldown()
{
if (Ep->Topline + Rows < Ep->Lines) {
if (Nsu == 0) {
text_sync();
ScrollRaster(Rp,0,Ysize,COL(0),ROW(0),COL(Columns)-1,ROW(Rows)-1);
++Ep->Topline;
++Ep->Line;
text_load();
text_displayseg(Rows-1, 1);
}
} else {
Abortcommand = 1;
}
}
do_scrollup()
{
if (Ep->Topline) {
if (Nsu == 0) {
text_sync();
ScrollRaster(Rp,0,-Ysize,COL(0),ROW(0),COL(Columns)-1,ROW(Rows)-1);
--Ep->Topline;
--Ep->Line;
text_load();
text_displayseg(0, 1);
}
} else {
Abortcommand = 1;
}
}
do_down()
{
if (Ep->Line + 1 < Ep->Lines) {
text_sync();
++Ep->Line;
text_load();
if (Ep->Line - Ep->Topline >= Rows) {
if (Nsu == 0) {
ScrollRaster(Rp,0,Ysize,COL(0),ROW(0),COL(Columns)-1,ROW(Rows)-1);
++Ep->Topline;
text_displayseg(Rows-1, 1);
}
}
} else {
Abortcommand = 1;
}
}
/*
* PAGEUP
* PAGEDOWN
* PAGESET n (n = 0 to 100 for percentage of #rows to scroll, minimum 1)
* can be > 100.
*/
do_page()
{
register int n, multiplier = 1;
register ED *ep = Ep;
static short pctg = 80;
switch(av[0][4]) {
case 'u':
multiplier = -1;
case 'd':
n = multiplier * Rows * pctg / 100;
if (!n)
n = multiplier;
if (n > 0 && ep->Topline >= ep->Lines - Rows)
return(0);
text_sync();
ep->Line += n;
ep->Topline += n;
if (ep->Line >= ep->Lines)
ep->Line = ep->Lines - 1;
if (ep->Line < 0)
ep->Line = 0;
if (ep->Topline >= ep->Lines)
ep->Topline = ep->Lines - Rows - 1;
if (ep->Topline < 0)
ep->Topline = 0;
text_load();
if (!text_sync())
text_redisplay();
break;
case 's':
pctg = atoi(av[1]);
break;
}
}
do_downadd()
{
ubyte *ptr;
if (Ep->Line + 1 == Ep->Lines) {
Ep->Modified = 1;
if (makeroom(32) && (ptr = allocb(1))) {
Ep->List[Ep->Lines] = ptr;
*ptr = 0;
++Ep->Lines;
} else {
nomemory();
}
}
do_down();
}
do_left()
{
if (Ep->Column) {
--Ep->Column;
if (Ep->Column < Ep->Topcolumn)
text_sync();
} else {
Abortcommand = 1;
}
}
do_right()
{
if (Ep->Column != 254) {
if (Current[Ep->Column] == 0) {
Current[Ep->Column] = ' ';
Current[Ep->Column+1]= '\0';
++Clen;
}
++Ep->Column;
if (Ep->Column - Ep->Topcolumn >= Columns)
text_sync();
} else {
Abortcommand = 1;
}
}
do_tab()
{
register short n;
for (n = Ep->Tabstop-(Ep->Column % Ep->Tabstop); n > 0; --n)
do_right();
}
do_backtab()
{
register short n;
n = Ep->Column % Ep->Tabstop;
if (!n)
n = Ep->Tabstop;
for (; n > 0; --n)
do_left();
}
do_return()
{
ubyte buf[256];
char *partial;
if (Comlinemode) {
strcpy(buf, Current);
strcpy(RecallBuf, Current);
partial = Partial;
Partial = NULL;
escapecomlinemode();
if (partial) {
if (do_command(buf))
do_command(partial);
free(partial);
} else {
do_command(buf);
}
} else {
Ep->Column = 0;
text_sync();
do_downadd();
}
}
do_bs()
{
register ED *ep = Ep;
if (ep->Column) {
bmov(Current + ep->Column, Current + ep->Column - 1, Clen - ep->Column + 1);
--ep->Column;
--Clen;
if (ep->Column < ep->Topcolumn) {
text_sync();
} else {
ScrollRaster(Rp, Xsize, 0,
COL(ep->Column - ep->Topcolumn),
ROW(ep->Line - ep->Topline),
COL(Columns)-1,
ROW(ep->Line - ep->Topline + 1)-1
);
if (Clen >= ep->Topcolumn + Columns) {
setpen(ep->Line);
Move(Rp, COLT(Columns-1), ROWT(ep->Line - ep->Topline));
Text(Rp, Current + ep->Topcolumn + Columns - 1, 1);
}
}
if (Comlinemode == 0 && ep->Wordwrap)
do_reformat(0);
} else {
Abortcommand = 1;
}
}
/*
* esc, escimm
*/
int Savetopline, Savecolumn, Savetopcolumn;
do_recall()
{
av[0] = (ubyte *)"escimm";
av[1] = (ubyte *)RecallBuf;
do_esc();
}
do_esc()
{
register ED *ep = Ep;
if (Comlinemode)
return(escapecomlinemode());
text_sync();
if (av[0][3] == 'i')
strcpy(Current, av[1]);
else
Current[0] = 0;
Clen = strlen(Current);
Comlinemode = 1;
returnoveride(1);
Savetopline = ep->Topline;
Savecolumn = ep->Column;
Savetopcolumn = ep->Topcolumn;
ep->Column = Clen;
ep->Topcolumn = 0;
ep->Topline = ep->Line - Rows + 1;
SetAPen(Rp, 0);
RectFill(Rp, COL(0), ROW(Rows-1), Xbase+Xpixs, Ybase+Ypixs);
SetAPen(Rp, 1);
Move(Rp, COL(0), ROW(Rows-1) - 1);
Draw(Rp, Xbase + Xpixs, ROW(Rows-1) - 1);
text_displayseg(Rows-1,1);
}
escapecomlinemode()
{
register ED *ep = Ep;
if (Partial) {
free(Partial);
Partial = NULL;
}
if (Comlinemode) {
strcpy(RecallBuf, Current);
Comlinemode = 0;
returnoveride(0);
ep->Topline = Savetopline;
ep->Column = Savecolumn;
ep->Topcolumn = Savetopcolumn;
text_load();
SetAPen(Rp, 0);
RectFill(Rp, COL(0), ROW(Rows-1)-1, Xbase+Xpixs, Ybase+Ypixs);
SetAPen(Rp, 1);
text_displayseg(Rows-2,2);
}
}
do_del()
{
register ED *ep = Ep;
if (Current[ep->Column]) {
bmov(Current + ep->Column + 1, Current + ep->Column, Clen - ep->Column);
--Clen;
ScrollRaster(Rp, Xsize, 0,
COL(ep->Column - ep->Topcolumn),
ROW(ep->Line - ep->Topline),
COL(Columns)-1,
ROW(ep->Line - ep->Topline + 1) - 1
);
if (Clen >= ep->Topcolumn + Columns) {
setpen(ep->Line);
Move(Rp, COLT(Columns-1), ROWT(ep->Line-ep->Topline));
Text(Rp, Current+ep->Topcolumn+Columns-1, 1);
}
if (Comlinemode == 0 && ep->Wordwrap)
do_reformat(0);
}
}
do_top()
{
text_sync();
Ep->Line = 0;
text_load();
text_sync();
}
do_bottom()
{
text_sync();
Ep->Line = Ep->Lines - 1;
text_load();
text_sync();
}
do_firstcolumn()
{
if (Ep->Column) {
Ep->Column = 0;
text_sync();
}
}
do_firstnb()
{
for (Ep->Column = 0; Current[Ep->Column] == ' '; ++Ep->Column);
if (Current[Ep->Column] == 0)
Ep->Column = 0;
text_sync();
}
do_lastcolumn()
{
short i;
text_sync();
i = (Comlinemode) ? Clen : strlen(Ep->List[Ep->Line]);
if (i != Ep->Column) {
Ep->Column = i;
text_sync();
}
}
/*
* GOTO [+/-]N
* GOTO BLOCK start of block
* GOTO START start of block
* GOTO END end of block
*/
do_goto()
{
register short n, i;
register ubyte *ptr = av[1];
i = 0;
n = -1;
switch(*ptr) {
case 'b':
case 's':
case 'B':
case 'S':
n = -1;
if (Ep == BEp)
n = BSline;
break;
case 'e':
case 'E':
n = -1;
if (Ep == BEp)
n = BEline;
break;
case '+':
i = 1;
case '-':
n = Ep->Line;
default:
n += atoi(ptr+i);
}
if (n >= Ep->Lines)
n = Ep->Lines - 1;
if (n < 0)
n = 0;
text_sync();
Ep->Line = n;
text_load();
text_sync();
}
do_screentop()
{
text_sync();
Ep->Line = Ep->Topline;
text_load();
text_sync();
}
do_screenbottom()
{
text_sync();
Ep->Line = Ep->Topline + Rows - 1;
if (Ep->Line < 0 || Ep->Line >= Ep->Lines)
Ep->Line = Ep->Lines - 1;
text_load();
text_sync();
}
static ubyte Fstr[256];
static ubyte Rstr[256];
static short Srch_sign;
static char Doreplace;
/*
* findstr, repstr
*/
do_findstr()
{
if (av[0][0] == 'f')
strcpy(Fstr, av[1]);
else
strcpy(Rstr, av[1]);
}
/*
* findr, nextr, prevr
*/
do_findr()
{
Doreplace = 1;
Srch_sign = 1;
switch(av[0][0]) {
case 'f':
strcpy(Fstr, av[1]);
strcpy(Rstr, av[2]);
break;
case 'p':
Srch_sign = -1;
break;
}
search_operation();
}
/*
* find, next, prev
*/
do_find()
{
Doreplace = 0;
Srch_sign = 1;
switch(av[0][0]) {
case 'f':
strcpy(Fstr, av[1]);
break;
case 'p':
Srch_sign = -1;
break;
}
search_operation();
}
static char CaseIgnore;
void
search_operation()
{
int flen = strlen(Fstr);
int rlen = strlen(Rstr);
char senabled = 0;
register ubyte *ptr;
register int i, col;
register ED *ep = Ep;
CaseIgnore = ep->IgnoreCase;
text_sync();
if (!flen) {
title("No find pattern");
Abortcommand = 1;
return;
}
col = ep->Column;
if (col >= strlen(ep->List[ep->Line]))
col = strlen(ep->List[ep->Line]);
for (i = ep->Line;;) {
ptr = ep->List[i];
if (Srch_sign > 0) {
while (ptr[col]) {
if (senabled && case_strncmp(Fstr,ptr+col,flen) == 0)
goto found;
senabled = 1;
++col;
}
senabled = 1;
if (++i >= ep->Lines)
break;
col = 0;
} else {
while (col >= 0) {
if (senabled && case_strncmp(Fstr,ptr+col,flen) == 0)
goto found;
senabled = 1;
--col;
}
senabled = 1;
if (--i < 0)
break;
col = strlen(ep->List[i]);
}
}
title("Pattern Not Found");
Abortcommand = 1;
return;
found:
ep->Line = i;
ep->Column = col;
text_load();
if (Doreplace) {
if (rlen > flen && rlen-flen+strlen(ptr) > 254) {
title("Replace: Line Too Long");
Abortcommand = 1;
return;
}
if (Clen-col-flen >= 0) {
bmov(Current+col+flen, Current+col+rlen, Clen-col-flen+1);
bmov(Rstr, Current+col, rlen);
Clen += rlen-flen;
}
text_sync();
text_redisplaycurrline();
} else {
text_sync();
}
}
#asm
; NOTE: assumes that one of the strings is at least
; 'len' bytes long, and contains no nulls. Also,
; returns only 0=success, 1=fail. NOT A TRUE
; CASE COMPARE... can get confused by control
; chars.
;
; 4(sp) = s1
; 8(sp) = s2
; 12(sp) = len
_case_strncmp:
movem.l 4(sp),A0/A1
move.l 12(sp),D0
move.l D2,-(sp)
tst.b _CaseIgnore
bne .csc100
moveq.l #0,D1 ;set Z bit case sensitive
bra .csc20
.csc10 cmpm.b (A0)+,(A1)+
.csc20 dbne D0,.csc10
bne .cscfail
.cscsucc moveq.l #0,D0 ;return true
move.l (sp)+,D2
rts
.csc100 moveq.l #0,D1 ;set Z bit case sensitive
bra .csc120
.csc110 move.b (A0)+,D1 ;XOR two bytes together
move.b (A1)+,D2
eor.b D2,D1
and.b #$DF,D1 ;forget bit 5 (the case)
.csc120 dbne D0,.csc110
beq .cscsucc
.cscfail moveq.l #1,D0 ;return failure
move.l (sp)+,D2
rts
#endasm
\Rogue\Monster\
else
echo "will not over write ./src/cmd1.c"
fi
if [ `wc -c ./src/cmd1.c | awk '{printf $1}'` -ne 17766 ]
then
echo `wc -c ./src/cmd1.c | awk '{print "Got " $1 ", Expected " 17766}'`
fi
echo "Finished archive 5 of 6"
# if you want to concatenate archives, remove anything after this line
exit
--
Bob Page, U of Lowell CS Dept. page@swan.ulowell.edu ulowell!page
Have five nice days.